Nette Framework
Vývojář | David Grudl, dobrovolní přispěvatelé |
---|---|
Aktuální verze | 3.2.1 (11. března 2024) |
Připravovaná verze | 4.0.0 (11. března 2024) |
Operační systém | Multiplatformní |
Vyvíjeno v | PHP |
Typ softwaru | Webový aplikační framework |
Licence | New BSD, GNU GPL |
Web | nette.org |
Některá data mohou pocházet z datové položky. |
Nette Framework je open source framework pro tvorbu webových aplikací v PHP. Zaměřuje se na eliminaci bezpečnostních rizik, podporuje AJAX, DRY, KISS, MVC a znovupoužitelnost kódu. Využívá událostmi řízené programování a z velké části je založen na použití komponent. Autorem Nette Frameworku je David Grudl, který se stará o jeho další rozvoj spolu s dalšími přispěvateli.[1] Nette Framework je svobodný software, nabízený pod licencemi GNU GPL a licencí New BSD[2].
Během vývoje se do frameworku přidávaly další užitečné (ale ne nepostradatelné) nástroje, doplňky, komponenty apod. A tím zdrojový kód stále rostl. Navíc když chtěl vývojář použít např. jen formuláře, musel si stáhnout celý framework. Proto se framework ve verzi 2.2 rozdělil do mnoha samostatných repozitářů.
Požadavky
[editovat | editovat zdroj]Nette Framework 3.0 vyžaduje PHP ve verzi 7.1 a vyšší, Nette 3.1 PHP ve verzi 7.2 a vyšší, nejnovější verze Nette 4.0 pak PHP 8.0 a vyšší. Další požadavky je možné otestovat na serveru pomocí oficiálního nástroje Requirements Checker.[3]
Vlastnosti Nette Framework
[editovat | editovat zdroj]- Ladící nástroje
- Aktivní komunita uživatelů v ČR
- Podpora jmenných prostorů v PHP 5.3
Autoloading
[editovat | editovat zdroj]NetteLoader
[editovat | editovat zdroj]V produkčním prostředí stačí načíst jediný soubor.
<?php
require_once 'Nette/loader.php';
RobotLoader
[editovat | editovat zdroj]- Využívá cache, je třeba nastavit její cestu
- Inteligentní zneplatnění cache
- V souboru netterobots.txt lze nastavit ignorované adresáře
$loader = new RobotLoader();
$loader->addDirectory('libs');
$loader->register();
Eliminace a ladění chyb
[editovat | editovat zdroj]Nette Framework poskytuje několik velmi silných nástrojů pro odhalování a ošetřování případných chyb.
Laděnka
[editovat | editovat zdroj]Ladící nástroj na odchytávání chyb vzniklých během kompilace programu. Zpřehledňuje klasické chybové hlášky. Umožňuje tak efektivní ladění aplikace. Stačí využít NetteLoader a zapnout debug mód.
<?php
require 'libs/Nette/loader.php';
Debug::enable();
Připojení na FireBug
[editovat | editovat zdroj]Komunikací FireBug a Nette\Debug umožňuje zasílat zprávy samostatným kanálem, mimo okno samotného prohlížeče. Informace se tedy neztratí v případné záplavě textů na stránce, ale zobrazí se přehledně v jiném okně. Chyby úrovně E_NOTICE a E_WARNING jsou do FireBug zasílány automaticky. Je nutné mít nainstalovaný FireFox alespoň verze 2. Stáhnout si rozšíření Firebug a FirePHP minimálně verzi 0.2. Nette\Debug komunikuje s FireBug přes hlavičky HTTP. Je tedy nutné volat logovací funkci před tím než začne PHP skript cokoliv vypisovat. Samozřejmě je možné zapnout output buffering a tím výstup oddálit.
Konzole
[editovat | editovat zdroj]Nette Debug console je vyskakovací okénko, do kterého je možné vypisovat proměnné.
<?php
$pole = array(1,2,3,5);
Debug::consoleDump($pole);
Logování chyb
[editovat | editovat zdroj]V případě produkčního režimu, kdy není vhodné ani žádoucí využívat některou z předchozích metod výpisu chyb nám dává Nette Framework nástroj k zachycení vzniklých chyb do logu. Textového souboru, kde se můžeme přesně dozvědět co se v aplikaci stalo a případné chyby opravit. Logování chyb je třeba zapnout a nastavit cestu k adresáři, do kterého je možné zapisovat.
Debug::enable(Debug::DETECT, '%logDir%/php_error.log', 'admin@example.com');
Parametr Debug::DETECT říká, že má Nette samo zjistit zda se server nachází v produkčním nebo vývojovém režimu. Další parametr je cesta k logovacím souborům a poslední je e-mailová adresa, kam se bude zasílat upozornění o vzniku chyby.
Vývojový nebo produkční režim
[editovat | editovat zdroj]Nette rozlišuje 2 režimy, pod kterými běží server. Vývojový režim se snaží nabídnout veškeré informace pro programátora o rychlosti běhu aplikace, o routování a pohodlný výpis vzniklých chyb. Naproti tomu v produkčním režimu Nette veškeré informace skryje a umožňuje logování chyb do souboru mimo oči běžného uživatele.
Framework dokáže sám zjistit v jakém režimu se server nachází. Rozhoduje se na základě IP adresy přidělené serveru. Chybu může způsobit server běžící za proxy serverem, nebo server určený pro lokální potřeby organizace. V tomto případě je nutné nastavit aktuální režim ručně.
Debug::enable(Debug::DEVELOPMENT);
Debug::enable(Debug::PRODUCTION);
Webové formuláře
[editovat | editovat zdroj]Nette dává programátorovi velmi silný nástroj pro tvorbu formulářů. Samotný framework zařídí veškeré ohlídání prvků formuláře. Ohlídá vstupy proti možným útokům.
Přednosti Nette Framework
[editovat | editovat zdroj]- Obsahuje velmi silný validační jazyk
- Automaticky generuje validační JavaScript
- Plná moc nad vzhledem formulářů
- Podpora automatického překladu
- Ošetření proti útokům: XSS, Cross-Site Request Forgery, UTF-8 attack
- Silná ochrana proti SQL injection, v případě používání notORM (Nette database)
$form = new Form();
$form->addText('jmeno','Zadejte jméno')
->addRule(Form::FILLED,'Zadejte své jméno');
$form->addPassword('heslo','Zadejte své heslo')
->addRule(Form::FILLED,'Zadejte heslo');
$form->addSubmit('prihlasit','Přihlásit');
echo $form;
Nevýhody Nette Framework
[editovat | editovat zdroj]- Nutnost občas ručně promazat cache
- Databázová vrstva se chová výrazně jinak pro tabulky bez primárního klíče
Routování, Cool URL
[editovat | editovat zdroj]Na rozdíl od většiny jiných frameworků je možné nastavit tvar URL jako poslední věc v celé aplikaci. Umožňuje to obousměrné zpracování routů, které slouží jak k parsování tak generování cest. Pěkné URL (Cool URL) je důležité také pro SEO, vyhledávače adresy vyhodnocují a stává se součástí bodování důležitostí webu a ovlivňuje tak pozici ve vyhledávači. Zároveň jsou adresy čitelnější a zapamatovatelnější pro uživatele stránek. Nette odstiňuje použití direktiv mod_rewrite a tak není nutné definovat tvar rout na více místech. Tím se předchází vzniku chyb.
Podpora
[editovat | editovat zdroj]K Nette Frameworku pořádá autor školení, která částečně mohou nahradit chybějící kusy dokumentace.[4] Každý měsíc se také koná neformální setkání příznivců Nette Frameworku, nazývané Poslední sobota pořádané v Praze, Brně i na jiných místech.[5]
Reference
[editovat | editovat zdroj]- ↑ Tým a přispěvatelé. nette.org [online]. [cit. 2024-03-22]. Dostupné online.
- ↑ Licenční politika na oficiálních stránkách Nette
- ↑ Nástroj Requirements Checker
- ↑ Jakub Vrána: Ohlas na školení Nette, blog PHP triky
- ↑ Poslední sobota v měsíci pro příznivce Nette Frameworku, zprávička na zdrojak.root.cz, 26. 2. 2009